package com.seal.commons.utils;


import java.security.SecureRandom;

/**
 * 功能描述: 随机数生成<br/>
 *
 * @author huangyong
 * @date: 2020-06-15 21:17<br/>
 * @since JDK 1.8
 */
public class RandomUtils {

    /**
     *  生成固定长度的数字随机数
     * @param length
     * @return
     */
    public static String generateDigit(int length){
        if(length<1){
            return "";
        }

        StringBuilder sb=new StringBuilder();
        SecureRandom rand=new SecureRandom();
        for(int i=0;i<length;i++)
        {
            sb.append(rand.nextInt(10));
        }
        return sb.toString();
    }

    /**
     * 生成固定长度字母字符串
     * @param length
     * @return
     */
    public static String generateAlphaAndDigit(int length){
        if(length<1){
            return "";
        }
        StringBuilder sb=new StringBuilder();
        //随机用以下三个随机生成器
        SecureRandom rand=new SecureRandom();
        SecureRandom randdata=new SecureRandom();
        for(int i=0; i<length; i++){
            int index=rand.nextInt(3);
            //目的是随机选择生成数字，大小写字母
            switch(index) {
                case 0:
                    //仅仅会生成0~9
                    sb.append(randdata.nextInt(10));
                    break;
                case 1:
                    //保证只会产生65~90之间的整数
                    sb.append((char)(randdata.nextInt(26)+65));
                    break;
                case 2:
                    //保证只会产生97~122之间的整数
                    sb.append((char)(randdata.nextInt(26)+97));
                    break;
                default:
                    break;
            }
        }
        return sb.toString();
    }

    public static void main(String[] args) {
        System.out.println(RandomUtils.generateAlphaAndDigit(5));
    }



}